package com.mju.service;


import com.mju.pojo.Order;
import com.mju.pojo.Receive;
import lombok.SneakyThrows;

import java.util.Map;

public interface IAliPayService {
    /**
     * 创建支付订单
     * @param order
     * @param uid
     * @return
     */
    String createPay(Order order, String uid);

    /**
     * 创建移动支付订单
     * @param order
     * @param uid
     * @return
     */
    String createPayForMobileTerminal(Order order, String uid);

    /**
     * 购买VIP
     * @param uid
     * @param day
     * @param amount
     * @return
     */
    public String buyVip(String vipName, String uid, Integer day, Integer amount);

    /**
     * 处理vip交易
     * @param params
     */
    public void processVip(Map<String, String> params);

    /**
     * 处理订单
     * @param parmas
     */
    void processOrder(Map<String,String> parmas);

    /**
     * 取消订单
     * @param oid
     */
    void cancelOrder(Integer oid);

    /**
     * 关闭订单接口的调用
     * @param oid
     */
    void closeOrder(Integer oid);

    /**
     * 申请退款
     * @param oid
     * @param reason 留言
     */
    void refundOrder(Integer oid, String reason);

    /**
     *
     * @param billDate  账单日期
     * @param billType  账单类型 这里使用trade或者signcustomer
     * @return
     */
    String queryBill(String billDate, String billType);

    /**
     * 处理移动端支付信息
     * @param params
     */
    void processOrderForMobileTerminal(Map<String, String> params);

    /**
     * 打款
     *
     * @param accountNumber 收款账号
     * @param payeeName     收款人姓名
     * @param receive       回收订单
     * @return
     */
    String transferAccounts(String accountNumber, String payeeName, Receive receive);

    /**
     * 校验是否转账成功
     *
     * @param orderId 流水单号
     * @return
     */
    @SneakyThrows
    boolean checkTransfer(String orderId);
}
